Editing options for image regions

ABSTRACT

Implementations relate to editing options for image regions. Some implementations include detecting a region portion of an image based on one or more characteristics of pixels of the image. The detected region has an identified class selected from multiple identifiable classes, and each identifiable class is associated with a set of multiple editing options. Each editing option is associated with edit operation(s) operable to adjust value(s) of one or more image pixels. One of the sets of editing options is presented for selection, where the presented set is associated with the identified class of the detected region and each of the editing options in the presented set is operable to adjust value(s) of one or more pixels of the detected region. The presented set of editing options is different from at least one of the other sets of editing options associated with the other classes.

BACKGROUND

The popularity and convenience of digital cameras as well as thewidespread of use of Internet communications have caused digital imagesto become ubiquitous. For example, user-produced digital photographs areposted to various Internet sites, such as web pages, social networkingservices, etc. for users and others to view. However, many images, suchas photographs taken by a camera, can include various featuresunsatisfying to a user. For example, a face captured in an image may betoo bright, have too much contrast, include undesired facial marks, etc.Or, a sky may be shown as too dark. To improve images, a user commonlyedits images directly by opening an image in an editor program andmanually adjusting various characteristics of particular regions of theimage, such as brightness, contrast, saturation, clarity or blurringamounts, etc. in regions such as faces, objects, or distinguishableareas.

SUMMARY

Implementations of the present application relate to editing options forimage regions. In some implementations, a method includes detecting aregion portion of an image based on one or more characteristics of oneor more pixels of the image. The detected region has an identified classselected from multiple identifiable classes, and each of the pluralityof identifiable classes is associated with a set of multiple editingoptions. Each editing option is associated with one or more editoperations operable to adjust one or more values of one or more pixelsof an image. The method includes presenting one of the sets of editingoptions for selection, where the presented set of editing options isassociated with the identified class of the detected region and each ofthe editing options in the presented set is operable to adjust one ormore values of one or more pixels of the detected region. The presentedset of editing options is different from at least one of the other setsof editing options associated with the other classes.

Various implementations and examples of the method are described. Forexample, detecting the region can include examining multiple differentimage characteristics to detect the region and determine its class. Theimage characteristics can include texture provided by colors of pixelsin the image, luminance of pixels in the image, hue of pixels in theimage, and/or location of the detected region with respect to one ormore borders of the image. Detecting the region can includeautomatically segmenting the image into multiple regions including thedetected region, and automatically identifying the classes of thesegmented regions.

At least one of the sets of editing options can include multipledifferent types of editing options, each type of editing optionincluding one or more edit operations different from edit operations ofthe other types of editing options. In some implementations, at leastone of the sets of editing options can include at least one type ofediting option that is different from the types of editing options in atleast one of the other sets. The presented set of editing options can bepredetermined to be appropriate for the identified class of the region.For example, the determined class can be facial skin, and the presentedset of editing options can include a smoothing operation. At least oneof the presented editing options can be a type of editing option thatdoes not adjust the color appearance of the region. At least one of thepresented editing options can include a convolution operation thatchanges a pixel value of a first pixel in the detected region andchanges a pixel value of at least one pixel in the region neighboringthe first pixel. For example, the convolution operation can include ablur operation that blurs a pixel and a plurality of neighboring pixelsin the detected region, a noise reduction operation that reduces noisein the detected region, a local contrast enhancement operation thatadjusts the contrast of one or more pixels in the detected regionrelative to pixels neighboring the one or more pixels in the detectedregion, and/or a sharpening operation that causes a pixel value todiffer from one or more neighboring pixels.

The set of editing options can be presented for selection in response toreceiving user input indicating the region in the image. The user inputcan include hovering a pointer over the region or tapping the region.The method can include receiving a selection of one of the presentedediting options and causing editing operations associated with theselected editing option to be performed on the detected region.

The method can include examining previously-selected editing optionsselected by one or more users and the classes of regions adjusted by thepreviously-selected editing operations. The presented set of editingoptions can be based on the most common of the previously-selectedediting options selected for the identified class of the detectedregion. The method can include receiving a definition of a new class ofregion from a user, and associating one or more editing options from thefull set of editing options to the new class of region.

A method includes, in some implementations, detecting a region portionof an image based on one or more characteristics of one or more pixelsof the image. A class of the detected region is identified, where theclass is selected from multiple identifiable classes. Each of theidentifiable classes of regions is associated with a different set ofone or more editing options, and each editing option in each set isassociated with one or more edit operations operable to adjust one ormore values of one or more pixels of an image. The method presents oneof the sets of editing options for selection, where each of thepresented editing options is appropriate for the determined class of theregion. Each of the presented editing options is operable to adjust oneor more values of one or more pixels of the detected region in responseto being selected. In some implementations, at least one of the sets ofediting options can include at least one type of editing option that isdifferent from the types of editing options in at least one other set.The presented set of editing options can include multiple editingoptions having different types, where each type of editing optionincludes one or more edit operations different from edit operations ofthe other types of editing options.

In some implementations, a system can include a storage device and atleast one processor accessing the storage device and operative toperform operations. The operations include detecting a region portion ofan image based on one or more characteristics of one or more pixels ofthe image. The detected region has an identified class selected frommultiple identifiable classes, and each of the identifiable classes ofregions is associated with a set of multiple editing options. Eachediting option is associated with one or more edit operations operableto adjust one or more values of one or more pixels of an image. One ofthe sets of editing options is presented for selection, where thepresented set is associated with the identified class of the detectedregion and each of the presented editing options is operable to adjustone or more values of one or more pixels of the detected region. Thepresented set of editing options is different from at least one of theother sets of editing options associated with the other classes.

In various implementations of the system, the presented set of editingoptions includes multiple different types of editing options, each typeof editing option including one or more edit operations different fromedit operations of the other types of editing options. The differenttypes of editing options can include a blur operation that blurs a pixeland a plurality of neighboring pixels in the detected region, a noisereduction operation that reduces noise in the detected region, a localcontrast enhancement operation that adjusts the contrast of one or morepixels in the detected region relative to pixels neighboring the one ormore pixels in the detected region, and/or a sharpening operation thatcauses a pixel value to differ from one or more neighboring pixels inthe detected region.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example network environment which may beused for one or more implementations described herein;

FIG. 2 is a flow diagram illustrating an example method for editingimage regions based on previous user edits, according to someimplementations;

FIG. 3 is a flow diagram illustrating an example method for editingimage regions based on previous user edits from a singlepreviously-edited source image, according to some implementations;

FIG. 4 is a flow diagram illustrating another example method for editingimage regions based on previous user edits from multiplepreviously-edited source images, according to some implementations;

FIG. 5 is a diagram illustrating example implementations using themethods of FIGS. 3 and 4; and

FIG. 6 is a block diagram of an example device which may be used for oneor more implementations described herein.

DETAILED DESCRIPTION

One or more implementations described herein relate to editing optionsfor image regions. Various implementations allow editing options to beprovided for image regions based on the classes of those regions. Forexample, if a user indicates a region of an image, suitable editingoptions for the class of the indicated region are presented to the userfor selection. This allows a user to easily select regions as well aschoose from appropriate editing options for those regions, promotingeasier, quicker, and higher-quality image editing operations.

In example implementations, the system can detect a region of an imagebased on one or more characteristics of pixels of the image. Forexample, the characteristics can include color, texture, or locationwithin the image. In some implementations, the system can automaticallysegment the image into multiple regions including the detected region.The system also identifies a class for the detected region based on thecharacteristics, where the class is selected from multiple classesidentifiable by the system. For example, the identifiable classes caninclude a face class and/or classes for facial features within faces(such as eyes, teeth, mouths, eyebrows, etc.) which can be detectedusing facial recognition techniques. Identifiable classes can alsoinclude a sky class, foliage class, building class, and/or otherclasses.

Each identifiable class of region is associated with a set of multipleediting options, and each editing option is associated with one or moreedit operations operable to adjust one or more values of pixels of animage. At least one of the classes is associated with a set of editingoptions that is different than the other sets of editing optionsassociated with the other classes. For example, this allows a different,appropriate set of editing options to be associated with each class, ifdesired. Each set of editing options can thus be made particularlyappropriate for the class of the detected region.

The system presents one of the sets of editing options for selectionwhich is associated with the identified class of the detected region.This set of editing options can be displayed to a user, e.g., inresponse to receiving user input indicating (e.g., located at) theregion in the image. For example, the user input can include hovering apointer over the region or tapping the region. Each of the presentedediting options is operable, if selected, to adjust one or more valuesof one or more pixels of the detected region. In some implementations,other features can also be provided. For example, the system can presentthe most common editing options previously selected for a class by oneor more users of a system or service. Some implementations allow a userto define a new class of region, where the user or system selects asubset of editing options from the full set of editing options toassociate with the new class of region.

Disclosed features can allow pertinent and appropriate editing optionsto automatically be presented to a user editing an image. For example, auser need not know which editing options out of a full and numerous setof options are best suited to a class of region he or she wants to edit.Instead, features herein can present those options to the user.Furthermore, the user need not employ time-consuming and complex tasksto select a desired region for editing, since features herein canautomatically select a region based on a simple indication of the user,such as hovering a pointer over an area of an image or tapping an areaof an image. Thus, a technical effect of region indication and automaticpresentation of appropriate editing options as disclosed herein includethe reduction in duration of editing images, thus saving a user time,energy, and resources for achieving edits to images. Another technicaleffect is a higher quality of edits to images resulting from moreappropriate editing options being applied to images by users, and moreconsistent application of similar editing options across classes ofregions in various images.

FIG. 1 illustrates a block diagram of an example network environment100, which may be used in some implementations described herein. In someimplementations, network environment 100 includes one or more serversystems, such as server system 102 in the example of FIG. 1. Serversystem 102 can communicate with a network 130, for example. Serversystem 102 can include a server device 104 and a database 106 or otherstorage device. Network environment 100 also can include one or moreclient devices, such as client devices 120, 122, 124, and 126, which maycommunicate with each other via network 130 and/or server system 102.Network 130 can be any type of communication network, including one ormore of the Internet, local area networks (LAN), wireless networks,switch or hub connections, etc.

For ease of illustration, FIG. 1 shows one block for server system 102,server device 104, and database 106, and shows four blocks for clientdevices 120, 122, 124, and 126. Server blocks 102, 104, and 106 mayrepresent multiple systems, server devices, and network databases, andthe blocks can be provided in different configurations than shown. Forexample, server system 102 can represent multiple server systems thatcan communicate with other server systems via the network 130. Inanother example, database 106 and/or other storage devices can beprovided in server system block(s) that are separate from server device104 and can communicate with server device 104 and other server systemsvia network 130. Also, there may be any number of client devices. Eachclient device can be any type of electronic device, such as a computersystem, laptop computer, portable device, cell phone, smart phone,tablet computer, television, TV set top box or entertainment device,display glasses or goggles, wristwatch, personal digital assistant(PDA), media player, game device, etc. In other implementations, networkenvironment 100 may not have all of the components shown and/or may haveother elements including other types of elements instead of, or inaddition to, those described herein.

In various implementations, end-users U1, U2, U3, and U4 may communicatewith the server system 102 and/or each other using respective clientdevices 120, 122, 124, and 126. In some examples, users U1-U4 mayinteract with each other via a social network service implemented onserver system 102, where respective client devices 120, 122, 124, and126 transmit communications and data to one or more server systems suchas system 102, and the server system 102 provides appropriate data tothe client devices such that each client device can receive contentuploaded to the social network service via the server system 102. Insome examples, the social network service can include any systemallowing users to perform a variety of communications, form links andassociations, upload and post shared content, and/or perform othersocially-related functions. For example, the social network service canallow a user to send messages to particular or multiple other users,form social links in the form of associations to other users within thesocial network system, group other users in user lists, friends lists,or other user groups, post or send content including text, images, videosequences, audio sequences or recordings, or other types of content foraccess by designated sets of users of the social network service, sendmultimedia information and other information to other users of thesocial network service, participate in live video, audio, and/or textchat or teleconferencing with other users of the service, etc. As usedherein, the term “social networking service” can include a softwareand/or hardware system that facilitates user interactions, and caninclude a service implemented on a network system.

A user interface can enable display of images and other content as wellas communications, privacy settings, notifications, and other data on aclient device 120, 122, 124, and 126. Such an interface can be displayedusing software on the client device, such as application software orclient software in communication with the server system. The interfacecan be displayed on an output device of a client device, such as adisplay screen.

Other implementations of features described herein can use any type ofsystem and service. For example, any type of electronic device can makeuse of features described herein. Some implementations can provide thesefeatures on client or server systems disconnected from or intermittentlyconnected to computer networks. In some examples, a client device havinga display screen can display images and provide features and results asdescribed herein that are viewable to a user.

FIG. 2 is a flow diagram illustrating one example of a method 200 forproviding editing options for image regions. In some implementations,method 200 can be implemented, for example, on a server system 102 asshown in FIG. 1. In other implementations, some or all of the method 200can be implemented on a system such as one or more client devices,and/or on both a server system and a client system. In describedexamples, the implementing system includes one or more processors orprocessing circuitry, and one or more storage devices such as a database106 or other storage. In some implementations, different components ofone or more servers and/or clients can perform different blocks or otherparts of the method 200. Method 200 can be implemented by computerprogram instructions or code, which can be executed on a computer, e.g.,implemented by one or more processors, such as microprocessors or otherprocessing circuitry and can be stored on a computer program productincluding a computer readable medium, such as a magnetic, optical,electromagnetic, or semiconductor storage medium, includingsemiconductor or solid state memory, magnetic tape, a removable computerdiskette, a random access memory (RAM), a read-only memory (ROM), flashmemory, a rigid magnetic disk, an optical disk, a solid-state memorydrive, etc. The program instructions can also be contained in, andprovided as, an electronic signal, for example in the form of softwareas a service (SaaS) delivered from a server (e.g., a distributed systemand/or a cloud computing system). Alternatively, method 200 can beimplemented in hardware (logic gates, etc.), or in a combination ofhardware and software. The method 200 can be performed as part of orcomponent of an application running on the system, or as an applicationor software running in conjunction with other applications and operatingsystem.

In some implementations, method 200 can be initiated based on userinput. A user may, for example, have selected the initiation of themethod 200 from an interface such as an application interface, a socialnetworking interface, or other interface. In other implementations, themethod 200 can be initiated automatically by a system. For example, themethod 200 (or parts thereof) can be periodically performed, orperformed based on one or more particular events or conditions such as auser opening an application such as an editing application, receivingone or more images that have been newly uploaded to or accessible by thesystem, etc. In some implementations, such conditions can be specifiedby a user in custom preferences of the user. In one non-limitingexample, method 200 (or parts thereof) can be performed on a camera,cell phone, or other client device that has captured one or more images.In addition or alternatively, the client device can send images to aserver over a network, and the server can process the images usingmethod 200.

In block 202 of method 200, the method obtains an image for processing.The image can be a digital image composed of multiple pixels, forexample, and can be stored on one or more storage devices of the systemor otherwise accessible to the system, such as a connected storagedevice, e.g., a local storage device or storage device connected over anetwork. For example, the image can be a photo captured by a camera, animage frame extracted from a captured video stream or other video data,or derived from a different source. In some implementations, a user canprovide or designate one or more images to process. In otherimplementations, the image can be automatically selected by the method,e.g., as an image from an album or other collection of multiple images,such as an album provided in an account of a user of a social networkingsystem. In some examples, the system can determine which image to obtainbased on evaluating one or more characteristics of accessible images,such as the color distributions of images, timestamps and other metadataof images, and/or identified and recognized content depicted in theimages, such as persons, faces, or objects.

In block 204, the method detects a region in the image and determines aclass of the region. The region can be detected based on one or morecharacteristics of pixels of the image. The region is a portion orsub-area of the image including a number of the image's pixels, forexample. In some implementations, the class of the region can be basedon a subject depicted in the region, such as a face, a location, anobject, or other subject. Multiple different classes are identifiableand distinguishable by the method, and one of these classes is assignedto the detected region based on the characteristics of the pixels of theregion. In some implementations or cases, the method can detect a region(e.g., based on particular characteristics such as color) and thenidentify its class (e.g., based on other characteristics of the detectedregion). In other implementations or cases, the method can detect aregion and identify its class approximately simultaneously. For example,if a region is detected by looking for particular characteristics, thesecharacteristics may also be unique enough to identify the class of thatregion.

The region can be detected and its class determined using any of avariety of techniques. In some examples or implementations, one class ofdetected region can be faces of people, or facial skin of people, andthis type of region and class can be identified based on looking forfacial features such as eyes, nose, mouth, eyebrows, etc. in an area ofthe image. Individual facial features themselves can also be classes ofdetected regions in some implementations. For example, a mouth, eyes,and eyebrows can each be a class of region. In some implementations,depictions of different objects can be defined as region classes and canbe detected in the image, such as foliage (e.g., tree leaves, grass,bushes, or other plant features), vehicles (car, truck, boat, etc.),articles or items (bottle, pen, phone, chair, etc.), or buildings orother structures. These objects can be detected and their classesdetermined using a variety of techniques that search for features orcharacteristics common to such objects, such as particular shapes,proportions, colors, brightnesses, surrounding features, etc. In someother examples, the class of region can be an area, location, orlandscape feature depicted in the image, such as a sky or portionthereof, a mountainside, foliage (e.g., tree or group of trees, an areacovered by grass, etc.), a lake, a river, etc., and can be detected (andclass determined) using techniques searching for features unique to suchfeatures, such as color, texture, location in the image, relation toother detected features, etc. Some examples are described in greaterdetail below.

Each of the identifiable classes of regions is associated with a set ofmultiple editing options, and each editing option is associated with oneor more edit operations that are operable to adjust one or more valuesof one or more pixels of an image. The pixel values can be, for example,RGB (red, green, blue) values, HSV (hue, saturation, value) values, HSL(hue, saturation, lightness) values, or other values used to determinethe appearance of a pixel. Examples of such editing options aredescribed in greater detail below.

In block 206, the method retrieves a set of one or more editing optionsassociated with the identified region class. In some examples, the setcan include multiple editing options. For instance, the set of editingoptions can be retrieved from storage such as memory or other storagedevice accessible to the method 200. The retrieved set is different fromat least one other set of editing options associated with otheridentifiable region classes. For example, the retrieved set can includea different number of editing options and/or different types of editingoptions than other sets of editing options associated with otheridentified classes. This allows different classes of regions to beassociated with different sets of editing options. In someimplementations, the retrieved set of editing options is appropriate forthe class of the detected region and therefore has been associated withthat class. Other classes of regions may be associated with other,different sets of editing options which are appropriate for thoseclasses. Some implementations can previously associate the retrieved setof editing options with the identified class so that the methodretrieves the previously-associated set, while in other implementationsthe method can select the appropriate set of editing options for theidentified region class from multiple available editing options.

An “appropriate” editing option for a particular class of region, ingeneral or common cases, provides a more effective and/or pleasingresult in the appearance of that class of image region to an averageviewer of the image as compared to “inappropriate” editing options.Appropriateness can be based on whether an editing option is commonlyused for a particular region class, and/or whether the editing option iseffective at modifying the appearance of the region without undesirableimage effects (noise, reduction of detail (desirable for some classes),increase in detail (desirable for other classes), etc.) An appropriateediting option for a particular class can be determined in any of avariety of ways. For example, expert users can determine which editingoptions are most often used and/or function with the most pleasingresults for particular classes, based on their experience. In someimplementations, appropriate editing options can be determined based onexamining previous edits of images, and/or previous edits from the sameuser and/or multiple users, where appropriate edit options are thoseoptions most often previous selected for the particular class of region.

In block 208, the method presents the retrieved set of editing optionsfor selection. For example, the method can cause the retrieved set ofediting options to be displayed on a display device of a client orserver device in an editing application or interface which a user hasopened for the purpose of editing the image. The user can then selectany one of the presented editing options to edit the image according tothe one or more edit operations of the selected option. In otherimplementations, the retrieved set of editing options can be presentedto other methods and/or systems for use in editing images automatically.

Thus, the method allows a set of editing options to be presented, whichare appropriate to a detected region. This allows a user, for example,to be presented with suitable editing options for a particular region ofinterest within an image, without the user having to know in advancewhich editing options are best used with a particular class of region.Thus, less effort and resources are needed for a user to effectivelyedit an image. Some implementations can also provide such options forimage regions that are pointed to or otherwise simply indicated by auser without having to select the detected region in any involved way,as described below in greater detail.

FIG. 3 is a flow diagram illustrating an example method 300 forassociating editing options to one or more regions in an image,according to some implementations. Method 300 can be implemented by asystem such as a server and/or client device as described above formethod 200.

In block 302, the method establishes multiple classes of regions thatare identifiable. The class of a region can be identified based on oneor more characteristics of the region. In some cases, the samecharacteristics of pixels that allow a region to be detected are alsoused to identify the class of the region. For example, a face class ofregion can be detected in an image by looking for facial features, andfinding these facial features also establishes the region as having aface class. In other cases, a region may be detected based on somecharacteristics and its class determined based on other characteristics.For example, a region may be detected based on finding pixels having thesame color or texture, and its class can be determined based on thecolor of those pixels and war the location of those pixels at relativeto the borders of the image. Each of the multiple identifiable classescan be associated with one or more characteristics and/or rules used toidentify those classes in an image. As described above, region classescan include a face class (which can be defined as just the facial skinof a face, if other facial features are defined as their own individualclasses), classes of individual facial features (eyes, eyebrows, nose,mouth), a sky class, a foliage class (and/or subclasses including grass,leaves, etc.), a building class, a pavement class, or other classes ofobjects (vehicles, items, etc.). Information describing such classes andrules can be stored in storage devices accessible to the method.

In some implementations, a user can define new, custom classes forregions in images. For example, a user can input one or morecharacteristics and/or conditions which, if found in region of an image,can establish the presence of the custom class. Such informationdefining the new class can be stored and accessible to the systemperforming method 300 and/or 400. In one example, the user can inputcharacteristics of a certain color which is to be searched four, and/ora particular location in an image which the region should be located(e.g., upper half, upper-right quadrant, etc.). The user can also defineparticular characteristics or regions which should surround a region toqualify it with the custom class, such as in the eye region beingsurrounded by a facial skin color. In some implementations, a user canprovide samples of the custom class of region which the method canexamine to find similar regions in an image. For example, the user cantrace particular regions in images using existing editing tools orfunctions, for which the user desires to define a custom class.

In block 304, the method associates a set of appropriate editing optionswith each identifiable class of image region. The method is operative toidentify the multiple available classes of regions in images that wereestablished in block 302 described above. The method can read theavailable sets of editing options from storage device(s) accessible tothe method. A set of editing options can include multiple editingoptions. Each of the sets of editing options is a different subset of afull set of editing options available for the editing application orother application or operating system in which the image can be opened.In some implementations, a different set of editing options can beassociated with each of at least two of the identifiable classes, orwith each of all of the identifiable classes. Further, in someimplementations, at least one of the sets of editing options (each setassociated with a respective region class) includes at least one type ofediting option that is different than the types of editing options in atleast one of the other sets of editing options associated with otheridentified classes. Such features can allow different sets of editingoptions, and/or different types of editing options, to be associatedwith different image region classes, thus allowing sets of options thatare appropriate for different classes of image regions and can be highlytailored and/or customized to those different classes.

An editing option includes one or more edit operations. Each editoperation changes a characteristic of one or more pixels of an image.For example, an edit operation can change a color (e.g., R, G, or B),hue, brightness, saturation, contrast, or similar value orcharacteristic of a pixel. An edit operation can also be a more complexoperation, such as a convolution operation in which a particular pixeland/or one or more neighboring pixels adjacent to that particular pixel(or within a group of pixels surrounding the particular pixel) arechanged in one or more characteristics. For example, an edit operationcan be a smoothing or blur operation which averages the color and/orbrightness of pixels surrounding a center pixel to create a smoothingeffect. An edit operation can be a noise reduction operation which canremove noise in color or other characteristics of a group of pixelswhile preserving details such as edges. A local contrast enhancementoperation can be another edit operation that changes the contrast of apixel or the region relative to neighboring pixels. A sharpening (or“structure”) operation can be another edit operation (e.g. a particularform of local contrast enhancement) in which a particular pixels' valuesare made as different as possible from the values of neighboring pixelsto provide the appearance of a sharper edge. Any or all of theseconvolution operations can be included as edit operations.

In addition, in some implementations, a particular editing option caninclude multiple individual edit operations. For example, an editingoption of “smooth” for a face class of region may include a bluroperation as well as a brightness-changing operation. An editing optionof “whiten teeth” in a mouth class of region can include a saturationedit operation (e.g., de-saturating yellow hues in the teeth) as well asan operation to increase brightness of the teeth.

Herein, a “type” of editing option refers to an editing option thatcauses a particular set of one or more edit operations to be performed.Each type of editing option causes a different set of edit operations tobe performed. For example, one type of editing option can cause a coloredit operation to be performed, in which a color of one or more pixelsis changed. Another type of editing option can cause a saturation valueof one or more pixels to be changed. Another distinct type of editingoption can cause a blur operation, while a different type can cause asharpening operation. In some cases, one type of editing option cancause multiple edit operations to be performed, such as a type ofediting option that causes a hue value and a saturation value of a pixelto change, or a type of editing option that causes a luminance value tochange and performs a smoothing operation.

Some types of editing options adjust a color appearance of theirassociated class of region, while other types do not. For example, anediting option that includes a color or saturation modification changesthe appearance of color in the region to the user. In contrast, anediting option that includes one or more convolution operations, such asblur/smoothing, noise reduction, sharpening, and structure operations,modify pixel values to achieve a different effect in the region thancolor appearance change.

Each set of editing options can be different. For example, sets caninclude different numbers of editing options, e.g., one class of regioncan be associated with a set of five editing options, while a differentclass can be associated with a set of four editing options. In someimplementations, a set of editing options can be different by includingone or more different types of editing options from one or more (or all)other sets. Such features allow each set to be made appropriate for aparticular class of image region in some implementations. For example,each set of editing options can be appropriate to the particular classto which it is associated. For instance, a face class of image regionmay be most appropriate for editing options such as “smooth” because auser may wish to blur and reduce the appearance of facial blemishes, andmay be appropriate for “brighten” to make a face more visible in animage since faces are often the intended focus of images. Otherappropriate options may include “change color” to allow a user to alterhues, “reduce noise” to remove noise artifacts on the face, and “adjustwarmth” to allow a user to increase or decrease “warm” hue values of theface such as reds, magentas, etc. In contrast, other classes of regionsmay not be as appropriate for one or more of these options. For example,a sky class of region may not be as appropriate for a “smooth” optionbecause sky regions typically already have less detail than faces andwould generally not need to be blurred. In some other examples, a skyclass of image region may be best suited for editing options such as“reduce noise” and not for “sharpen detail” (since a sky is generally abackground region in which more detail is not desired). A foliage classof image region may be best suited for editing options such as “sharpendetail” and not for “reduce noise” (since noise reduction techniques mayremove texture details in foliage).

The appropriateness (suitability) of a particular editing option for aparticular class of region can be determined in a variety of ways, asdescribed above. For example, expert image-editing users can decidebeforehand which editing options function best with which classes ofimage regions, based on their experience. In other implementations, themethod can examine the opinions and/or editing activities of aparticular user and/or multiple users, and determine which editingoperations are most often used with which classes of image regions. Forexample, editing activities of multiple users of a social networkingservice or other networked or online service can be examined (e.g., withthe users' permissions) to determine which editing options should be inthe set associated with each particular class of image region.

Furthermore, in some implementations, a set of editing options (e.g.,one or more sets, or each set of editing options) can include multipledifferent types of editing options. This allows a user to select anoption from a menu having a variety of different types of edits to theindicated region, providing more flexibility in editing for a user.

Each association of a particular image region class with a set ofediting options can be stored in storage device(s) available to themethod 300. These associations can later be examined for display ofediting options as described below with respect to FIG. 4. For example,the association data can be stored as a look up table in which a classcan be looked up to find its associated set of editing options.

In block 306, the method obtains an image. This block can be similar toblock 202 described above with reference to figure two. In someimplementations, a user can select the image. For example, a user caninput a command to open a particular image for editing in editingapplication or other application. In other implementations, the imagecan be obtained for method 300 automatically, such as receiving an imagefrom or selecting an image from a particular source device or storagedevice, e.g., over a network, from a user's album, etc. Block 306 can beperformed any time after blocks 302 and 304.

In block 308, the image examines multiple image characteristics. Thisblock is performed in order to find one or more regions within the imageand to classify those regions in the next block. A variety of differentimage characteristics can be examined. For example, pixelcharacteristics (in any model used, such as RGB, HSV, HSL, HSI, etc.)such as color (e.g., RGB values), hue, brightness or luminance,saturation, or other pixel characteristics can be examined. Adistribution of any of these characteristics in the image can also beexamined, such as in a histogram. In some implementations, acharacteristic of texture in areas of the image can be examined, such astexture provided by colors of multiple pixels, where a texturecharacteristic such as frequency can be determined (e.g., the spacingbetween regularly spaced features appearing within the examined area ofthe image). Some implementations can detect a region based on othercharacteristics of pixels or an area, such as the location of the regionwithin the image frame (e.g., near the top border of the image, near thebottom of the image, near a side of the image, near the center of theimage, etc.). Some implementations can detect image characteristics andfeatures adjacent to or surrounding a detected region, such as colorcharacteristics, line or edge features, etc. Various implementations canexamine multiple or combinations of different characteristics.

In block 310, the method segments the image into one or more detectedregions and determines the class of each detected region. This isperformed using the characteristics and/or other signals found in theimage in block 308. In one example, the method detects a face class ofregion by looking for particular ranges of colors typically found infaces, and/or looking for facial features such as eyes, mouth, eyebrows,ears, and nose in a predetermined spatial configuration. The facialfeatures can themselves be detected based on their size relative to aface, color, spacing from other facial features, etc. For example, amouth can be detected based on location points found surrounding themouth that define a bounding box around the mouth having a predeterminedsize, shape, and location relative to other facial features such as noseand eyes.

In another example, the method can detect a sky class of region bylooking for particular colors, such as finding a particular cluster ofblue hues in a hue distribution such as a histogram or hue wheel derivedfrom the image. Colors of features within the region can also be sought,such as white or gray colors for clouds that can also indicate a skyclass of region. The sky class of region can also be determined bylooking at the location of a particular region (e.g., a group ofadjacent pixels having a predetermined color) relative to the imageframe (e.g., borders), where a sky region would be typically locatednear the top border of the image. In another example, the method candetect a foliage class of region by looking for particular colors, suchas green or yellow hues, in a region defined by adjacent pixels havingthese hues. In addition, the method can check for particular textures insuch a region, such textures indicating leaf patterns or grass patternsin a foliage class of region. Other classes of regions can also bedetected in other implementations, such as different types of objects(vehicle, article, building, landscape feature, etc.) as describedabove.

As a result of block 310, the image can be segmented into multipledetected regions having a class assigned to each region. Informationdescribing this segmentation can be stored in storage device(s) foraccess by the method 300 and/or 400. In other implementations, the imageis not segmented into regions in method 300; e.g., a region can bedetected and classified after user input in received as in method 400 ofFIG. 4.

In block 310, the method assigns each detected region to an associatedset of editing options based on the class of the region. For example,the set of editing options assigned to each detected region can bedetermined from the stored associations of sets of editing options withdifferent classes of regions as determined in block 302. Thus, forexample, a particular class of detected region is matched in theassociation data and the stored set of edit options associated with thatclass is assigned to that detected region.

FIG. 4 is a flow diagram illustrating an example method 400 forpresenting editing options for a region in an image, according to someimplementations. Method 400 can be implemented by a system such as aserver and/or client device as described above for method 200. In someimplementations, method 400 can be initiated after method 300 of FIG. 3,where the image processed in method 400 is the same as the obtainedimage processed in method 300. In other implementations, method 400 canbe initiated after other conditions or events, e.g., using any obtainedimage previously processed or not.

In block 402, the method displays an image. For example, the image maybe displayed by display device in an editing application or other typeof application. A user, for example, may have commanded the image to bedisplayed in the application so that the user can edit the image. Inother cases, the image may be displayed in a social networkingapplication, viewing application for viewing content, or otherapplication.

In block 404, the method checks whether a region in the displayed imageis indicated by a user. The region can be indicated by a user with userinput directed at the region. In some implementations, the user inputcan be a simple pointing action and need not include a selection bydragging a pointer or other cursor (e.g., to resize a selection box) orby tracing an outline of a particular region with a cursor. For example,the user can indicate the region by hovering a user-controlled displayedpointer or other cursor over the region in the image. For instance, thehovering can include maintaining a pointer within a threshold distanceof a particular location for a predetermined length of time, such as afew seconds. The method can then determine whether the particularlocation is within a detected region. Alternatively, a user can click onan area of the image that is included in a particular region, e.g., pusha physical button while a pointer is at a location. In otherimplementations, a user can indicate the region by tapping a location onthe image, where the location is within the region. For example, manyportable devices include a touchscreen that serves as an output devicefor displaying images and as an input device for receiving touch inputfrom the user. The user can tap a location in the image by touching thetouch screen at the desired displayed location in the image. If thelocation indicated by the user is included in a detected region of theimage, then that detected region is considered to be indicated by theuser. If the location indicated by the user is not included in adetected region of the image, then no regions are indicated and themethod returns to block 402.

If a region is indicated by a user, then the method continues to block406, in which the method displays (or otherwise presents) the set ofediting options that is associated with the indicated region. Asdescribed above with respect to block 310 of FIG. 3, each region in theimage has been previously associated with a set of edit options, andthis set of edit options is displayed in block 406. The presented set ofediting options is different from one or more of the other sets ofediting options associated with the other identifiable classes of imageregions, thus allowing an appropriate set of particular types of editingoptions to be displayed for any class of an indicated region asdescribed above. In some implementations, the presented set of editingoptions includes multiple different types of editing options asdescribed above, providing more flexibility in editing for a user.

In other implementations, there may be no previous associations ofediting options associated with the detected region, and/or there maynot be previously segmented regions in the image. In such cases, therequired processing can be performed by the method to detect whether animage has been indicated, identify a class for the region, and/ordetermine which set of editing options is associated with the identifiedclass, similar to appropriate blocks of FIG. 3.

The editing options can be displayed in any of a variety of formats. Forexample, the editing options can be displayed in a vertical menu, whereeach editing option is displayed as a label in a vertical column oflabels. In other implementations, the editing options can be displayedas icons (e.g., each icon having an associated text description that isdisplayed when a pointer is hovered over the icon), horizontal labels,or icons/labels in other configurations. The editing options can bedisplayed near the location where the user indicated the region, such asnear a hovered pointer or a tapped location in the image. Otherimplementations can display the editing options in other areas of agraphical interface, such as in a dedicated field or window, or in a newpop-up window in the interface.

In block 408, the method checks whether one of the displayed editoptions has been selected, e.g., by the user (or program). For example,the user can select one of the edit options by controlling a displayedpointer and interface device or by touching a touchscreen at thelocation of the desired editing option. If no editing option isselected, the method returns to block 402.

If an editing option is selected, then in block 410 the method performsthe one or more edit operations associated with the selected editingoption to adjust one or more pixel values in the indicated region. Asdescribed above with reference to block 302 of FIG. 3, each editingoption can include one or more edit operations that modify one or morecharacteristics of pixels of the image. In some implementations, themethod performs these modifications to all the pixels of the indicatedregion. In other implementations, the method performs the modificationsto a subset of the pixels of the indicated region, where the subset canbe selected by the user, can be determined by the method, and/or can bedetermined by location indicated by the user and by the particularoperations performed. For example, if the user selects an editing optionto “whiten teeth” of a mouth region, then the method can determine whichpixels of the indicated mouth region should be modified by theoperations of that selected option. The pixels to be modified caninclude pixels portraying the teeth but not include pixels portrayinglips or other parts of the mouth (e.g., where such pixels can bedistinguished via their color and/or shape). If a user selects to smootha face region, then facial features within the face (such as eyes,mouth, etc.) can be detected based on color, shape, etc., and excludedfrom the blur operation.

Furthermore, some editing options can prompt the user for additionalinput after being selected. For example, a color adjustment options candisplay a slider bar or input field and ask the user for a new colorvalue to which to change the region, and upon receiving the value, thecolor operation changes the pixel values in the region to that value.Other editing options can use additional user input to select particularareas within the region that the associated operations will adjust.

After performing the selected edit operation(s), the method can returnto block 402.

Various blocks and operations of methods 200-400 can be performed in adifferent order than shown and/or at least partially simultaneously,where appropriate. For example, some implementations can perform blocks302-304 at various times and/or based on events not related to a userediting an image. Blocks 306-312 can be performed for multiple imagesbefore any of those images are edited in method 400. In someimplementations, blocks or operations of methods 200-400 can occurmultiple times, in a different order, and/or at different times in themethods. In some implementations, the methods 200, 300, and/or 300 canbe implemented, for example, on a server system 102 as shown in FIG. 1.In some implementations, one or more client devices can perform one ormore blocks instead of or in addition to a server system performingthose blocks.

FIG. 5 is a diagram illustrating an example implementation of themethods of FIGS. 3 and 4 using an example image 500. In someimplementations or applications, the shown image 500 can be receivedfrom a variety of sources, such as memory, storage drives, or otherstorage of one or more users, and can be stored in a variety of formats,such as an image in the user's photo albums, an image frame in a movieor other video sequence, etc. The image can be processed as describedbelow by a client or server device. In some implementations, the imagecan be displayed on a display device, e.g., of a client device 120, 122,124, and/or 126 of FIG. 1, or a server system 102 in someimplementations. In one non-limiting example, the user can view theimage displayed by a display device in a graphical interface provided bya client device or server device.

In some implementations, the image 500 can be associated with (e.g.,owned by or accessible by) a single particular user, e.g., stored on aparticular user's account on a system. This allows custom editingoptions and/or preferences of that user to be used for images. Otherusers can similarly have their own custom editing options, preferences,and images stored for their own use. Other implementations can shareimages and/or custom editing options of a particular user with multipleusers. In one example, a second user can view a first user's custom setsof editing options, and can designate to the system that one or morethose sets of editing options are acceptable to the second user. Thosefirst-user sets of editing options can then be presented for the seconduser's images.

In this example of FIG. 5, image 500 is obtained by the system and canbe analyzed to detect one or more regions as described above withreference to FIG. 3. In image 500, the system has detected face regions506 and 508, as well as sky region 510, tree region 512, sky region 514,building region 516, and pavement region 518. The dashed lines in FIG. 5indicate the extent of detected regions but need not be displayed insome implementations. These regions can be detected using a variety oftechniques, some of which are described above. For example, face regions506 and 508 can be detected using facial recognition techniques thatexamine the image for certain facial features, such as eyes, mouth,eyebrows, and nose that are positioned within particular spatialconfigurations. In some implementations, the detected face region 506can be defined by a face bounding box (or polygon) that borders a regionaround the detected facial features of the face. In otherimplementations, a defined face region can further include skin areasadjacent to and outside the bounding box that have a similar color tothe skin areas within the bounding box. In this example, eye regions 520and 522 have also been detected by the system, along with the otherfacial features of eyebrows, nose, and mouth features near these eyes todetect face 506. In this example, the eyes 520 and 522 are detected astheir own regions similar to the other regions described herein. Thus,the face regions 506 and 508 can be defined as just the facial skinareas within the bounding boxes that exclude any facial features (suchas eyes 520 and 522) that are defined as their own separate regions.

The sky regions 510 and 514 can be detected and identified as a skyregion class by looking for particular characteristics of pixels of theimage 500. For example, the system can check for color such as hueswithin the range of blue or gray hues, as well as position of a regionof pixels having an appropriate color. Here the sky regions 510 and 514are positioned adjacent to the top border of the image 500, and so aredetected as sky regions. The tree region 512 can be detected andidentified, for example, by detecting a green color for the area ofadjacent pixels, and by detecting a texture of the leaves of the tree.The building region 516 can be detected and identified based oncharacteristics such as straight edges (e.g., detected using known edgedetectors for images such as Hough line transform, etc.), color (grays,whites, etc.), and location within the image (e.g., closer to the tophalf of image). Pavement region 518 can be detected and identified basedon characteristics such as parallel lines within the region, color(gray, black, etc.), and position within the image borders (e.g., closerto bottom half of image).

In some implementations, the image 500 is analyzed for all detectableregions, e.g., before the image is opened and displayed to be edited bya user. In other implementations, the image 500 can be analyzed fordetectable regions at the time displayed regions are indicated by theuser, such as regions in an image location underneath a pointer orcursor or tapped by a user.

Image 500 can be displayed in an editor application or other program. Inthis example, the user controls a displayed pointer 528, which can becontrolled by pointing device such as a mouse, trackball, stylus, etc.The user hovers the pointer 528 at the location 530, which is within thedetected region 506. This action causes a menu 532 to be displayed forthe region 506. Menu 532 includes multiple editing options which areeach selectable by the user using pointer 528. The menu 532 can bedisplayed close to the pointer 528 and location 530, for example, or canbe displayed in another area of a graphical interface. In otherimplementations, the location 530 or other location within region 506may have been tapped by a user, e.g., on a touch screen, to cause themenu 532 to be displayed.

Menu 532 includes editing options that are appropriate to the class ofthe face region 506. For example, the editing options include varioustypes of editing options to smooth pixels, brighten pixels, adjustcontrast, reduce noise, change color, brighten shadows (e.g., fill lightto recover detail in shadow tones), recover highlights (e.g., darkenover-exposed or clipped highlight tones), and adjust “warmth” (e.g.,increase warmth by raising temperature of white point of region, and/orboosting magenta, red, orange, or pink tones (such as hue and saturationof highlight and shadow tones), etc.) of pixels of the detected region506. These editing options have been predetermined to be mostappropriate and suitable for facial regions such as region 506. Forexample, these editing options may be selected by one or more expertusers, or can be the most common or typical editing options previouslyused by one or more users of the system or accessible service forregions of a face class. A menu similar to menu 532 can be displayed inresponse to facial region 508 being indicated by the user.

In some implementations, an extending option such as option 534 can alsobe displayed in a menu of editing options such as menu 532. Option 534,when selected by the user, causes additional editing options to bedisplayed. These additional editing options can be selected from a fulllist of editing options provided by the editing application or otherapplication. This feature allows a user to select an editing option thatmay not be displayed in menu 532.

Other examples of menus 538 and 544 presenting editing options are alsoshown in FIG. 5. (In some implementations, only one of the menus 532,538, and 544 are displayed at any one time based on the most recentregion indicated by the user.) For example, in sky region 510, a userhas tapped the location 536 using a touch screen, which the systemdetermines to be in sky region 510 and causes menu 538 to be displayed.Menu 538 presents editing options that are suitable for a sky class ofregion. For example, the menu includes various types of editing optionsto brighten or dark in the region, reduce noise in the region, perform alocal contrast enhancement in the region, change the color, changesaturation (e.g., for blue hues of a sky class of region), or performtonal compression (e.g., dark and light tones on the extremes of ahistogram of the region are compressed toward the middle of thehistogram) of pixels of the region 510. For example, no smoothing optionis presented because such an option is typically not appropriate orsuitable for a sky region. Some implementations can present an extensionoption similar to option 534 to allow a user to select additionalediting options if desired. Sky region 514 can present a menu similar tomenu 538 if the user hovers over, taps, or otherwise indicates region514.

In another example, a user has tapped the location 542 which the systemdetermines to be located within the tree region 512. The menu 544 isdisplayed in response to that user input. Menu 544 includes editingoptions suitable for a foliage class of region such as tree region 512.For example, menu 544 includes options to sharpen, brighten, darken,change color, or change saturation of pixels of the region 512. In someimplementations, the “change saturation” option can change onlyappropriate hues for the class of region. For example, for the foliageclass, the appropriate hues relevant to foliage can be yellow and greenhues, and other hues would not be changed. Editing options such assharpening details are not presented in the menus for facial region 506and the sky region 510 because such an option is typically not performedin those classes of regions (although in some implementations, suchoptions can be accessed with further input, such as selecting a “More”option 534 as in menu 532).

Other classes of regions can be identified in some implementations. Forexample, building region 516 has been detected to portray a building andto have a building class, and a suitable menu of editing options can bedisplayed in response to a user indicating region 516. Similarly, thepavement region 518 has been detected and identified to portray pavementor similar surface, and a suitable menu of editing options can bedisplayed in response to the user indicating region 518. Other imagesmay include regions having classes such as water, animals (or specifictypes of animals such as birds, dogs, etc.), objects, and so on, eachassociated with their own set of editing options that may have differenttypes of options than other sets and which are appropriate for theirassociated classes. For example, a water class of region may includesharpen, noise reduction, brighten, darken, color, saturation, and localcontrast enhancement options, while an animal class may include sharpen,brighten, local contrast enhancement, and noise reduction options.

In some implementations, as described above, a user may be able todefine a new class of region, e.g., define a custom class of region. Forexample, the user may be able to use a drawing tool or similar featureof an application to trace or otherwise delineate a region within image500. The user can also provide conditions or characteristics to examinein an image to detect that class of region. The user can also selectdesired editing options from the full set of available editing options,and the selected editing options would be presented as the set ofediting options in a menu when that class of region is indicated by auser, e.g., similarly to the menus described above.

FIG. 6 is a block diagram of an example device 600 which may be used toimplement one or more features described herein. In one example, device600 may be used to implement server device 104 of FIG. 1, and performappropriate method implementations described herein. Device 600 can beany suitable computer system, server, or other electronic or hardwaredevice. For example, the device 600 can be a mainframe computer, desktopcomputer, workstation, portable computer, or electronic device (portabledevice, cell phone, smart phone, tablet computer, television, TV set topbox, personal digital assistant (PDA), media player, game device, etc.).In some implementations, device 600 includes a processor 602, a memory604, and input/output (I/O) interface 606.

Processor 602 can be one or more processors or processing circuits toexecute program code and control basic operations of the device 600. A“processor” includes any suitable hardware and/or software system,mechanism or component that processes data, signals or otherinformation. A processor may include a system with a general-purposecentral processing unit (CPU), multiple processing units, dedicatedcircuitry for achieving functionality, or other systems. Processing neednot be limited to a particular geographic location, or have temporallimitations. For example, a processor may perform its functions in“real-time,” “offline,” in a “batch mode,” etc. Portions of processingmay be performed at different times and at different locations, bydifferent (or the same) processing systems. A computer may be anyprocessor in communication with a memory.

Memory 604 is typically provided in device 600 for access by theprocessor 602, and may be any suitable processor-readable storagemedium, such as random access memory (RAM), read-only memory (ROM),Electrical Erasable Read-only Memory (EEPROM), Flash memory, etc.,suitable for storing instructions for execution by the processor, andlocated separate from processor 602 and/or integrated therewith. Memory604 can store software operating on the device 600 by the processor 602,including an operating system 608 and one or more applications engines610 such as a graphics editing engine, web hosting engine, socialnetworking engine, etc. In some implementations, the applicationsengines 610 can include instructions that enable processor 602 toperform the functions described herein, e.g., some or all of the methodsof FIGS. 2, 3, and/or 4. Any of software in memory 604 can alternativelybe stored on any other suitable storage location or computer-readablemedium. In addition, memory 604 (and/or other connected storagedevice(s)) can store images, classes of regions, sets of editingoptions, associations between classes and editing options, and otherdata used in the features described herein. Memory 604 and any othertype of storage (magnetic disk, optical disk, magnetic tape, or othertangible media) can be considered “storage devices.”

I/O interface 606 can provide functions to enable interfacing the device600 with other systems and devices. For example, network communicationdevices, storage devices such as memory and/or database 106, andinput/output devices can communicate via interface 606. In someimplementations, the I/O interface can connect to interface devices suchas input devices (keyboard, pointing device, touchscreen, microphone,camera, scanner, etc.) and output devices (display device, speakerdevices, printer, motor, etc.).

For ease of illustration, FIG. 6 shows one block for each of processor602, memory 604, I/O interface 606, and software blocks 608 and 610.These blocks may represent one or more processors or processingcircuitries, operating systems, memories, I/O interfaces, applications,and/or software modules. In other implementations, device 600 may nothave all of the components shown and/or may have other elementsincluding other types of elements instead of, or in addition to, thoseshown herein. While system 102 is described as performing steps asdescribed in some implementations herein, any suitable component orcombination of components of system 102 or similar system, or anysuitable processor or processors associated with such a system, mayperform the steps described.

A client device can also implement and/or be used with featuresdescribed herein, such as client devices 120-126 shown in FIG. 1.Example client devices can include some similar components as the device600, such as processor(s) 602, memory 604, and I/O interface 606. Anoperating system, software and applications suitable for the clientdevice can be provided in memory and used by the processor, such asclient group communication application software. The I/O interface for aclient device can be connected to network communication devices, as wellas to input and output devices such as a microphone for capturing sound,a camera for capturing images or video, audio speaker devices foroutputting sound, a display device for outputting images or video, orother output devices. A display device, for example, can be used todisplay the settings, notifications, and permissions as describedherein, where such device can include any suitable display device suchas an LCD, LED, or plasma display screen, CRT, television, monitor,touchscreen, 3-D display screen, or other visual display device. Someimplementations can provide an audio output device, such as voice outputor synthesis that speaks text and/or describes settings, notifications,and permissions.

Although the description has been described with respect to particularimplementations thereof, these particular implementations are merelyillustrative, and not restrictive. Concepts illustrated in the examplesmay be applied to other examples and implementations.

In situations in which the systems discussed here may collect personalinformation about users, or may make use of personal information, usersmay be provided with an opportunity to control whether programs orfeatures collect user information (e.g., images depicting the user,information about a user's social network, user characteristics (age,gender, profession, etc.), social actions or activities, a user'spreferences, or a user's current location). In addition, certain datamay be treated in one or more ways before it is stored or used, so thatpersonally identifiable information is removed. For example, a user'sidentity may be treated so that no personally identifiable informationcan be determined for the user, or a user's geographic location may begeneralized where location information is obtained (such as to a city,ZIP code, or state level), so that a particular location of a usercannot be determined. Thus, a user may have control over how informationis collected about the user and used by a server.

Note that the functional blocks, features, methods, devices, and systemsdescribed in the present disclosure may be integrated or divided intodifferent combinations of systems, devices, and functional blocks aswould be known to those skilled in the art. Any suitable programminglanguage and programming techniques may be used to implement theroutines of particular implementations. Different programming techniquesmay be employed such as procedural or object-oriented. The routines mayexecute on a single processing device or multiple processors. Althoughthe steps, operations, or computations may be presented in a specificorder, the order may be changed in different particular implementations.In some implementations, multiple steps or blocks shown as sequential inthis specification may be performed at the same time.

What is claimed is:
 1. A method comprising: detecting a region of animage based on one or more characteristics of one or more pixels of theimage, the region including only a portion of the image, wherein thedetected region has an identified class selected from a plurality ofidentifiable classes, wherein each of the plurality of identifiableclasses of regions is associated with a set of multiple editing options,each editing option in each set being associated with one or more editoperations operable to adjust one or more values of one or more pixelsof an image; and presenting one of the sets of editing options forselection, wherein the presented set of editing options is associatedwith the identified class of the detected region and wherein each of theediting options in the presented set is operable to adjust one or morevalues of one or more pixels of the detected region, and wherein thepresented set of editing options is different from at least one of theother sets of editing options associated with the other classes.
 2. Themethod of claim 1 wherein at least one of the sets of editing optionsincludes a plurality of different types of editing options, each type ofediting option including one or more edit operations different from editoperations of the other types of editing options.
 3. The method of claim1 wherein at least one of the sets of editing options includes at leastone type of editing option that is different from the types of editingoptions in at least one of the other sets of editing options.
 4. Themethod of claim 1 wherein the presented set of editing options arepredetermined to be appropriate for the identified class of the region.5. The method of claim 4 wherein the determined class is facial skin,and wherein the presented set of editing options includes a smoothingoperation.
 6. The method of claim 1 wherein at least one editing optionin the presented set of editing options is a type of editing option thatdoes not adjust the color appearance of the region.
 7. The method ofclaim 1 wherein at least one of the presented editing options includes aconvolution operation that changes a pixel value of a first pixel in thedetected region and changes a pixel value of at least one pixel in theregion neighboring the first pixel.
 8. The method of claim 7 wherein theconvolution operation includes at least one of: a blur operation thatblurs a pixel and a plurality of neighboring pixels in the detectedregion; a noise reduction operation that reduces noise in the detectedregion; a local contrast enhancement operation that adjusts the contrastof one or more pixels in the detected region relative to pixelsneighboring the one or more pixels in the detected region; a sharpeningoperation that causes a pixel value to differ from one or moreneighboring pixels.
 9. The method of claim 1 wherein detecting theregion includes examining a plurality of different image characteristicsto detect the region and determine its class.
 10. The method of claim 9wherein the plurality of different image characteristics include atleast one of: texture provided by colors of pixels in the image,luminance of pixels in the image, and location of the detected regionwith respect to one or more borders of the image.
 11. The method ofclaim 1 wherein detecting the region includes automatically segmentingthe image into a plurality of regions including the detected region, andautomatically identifying the classes of the segmented regions.
 12. Themethod of claim 1 wherein the set of editing options is presented forselection in response to receiving user input indicating the region inthe image, wherein the user input includes hovering a pointer over theregion or tapping the region.
 13. The method of claim 1 furthercomprising: receiving a selection of one of the presented editingoptions; and causing the one or more editing operations associated withthe selected editing option to be performed on the detected region. 14.The method of claim 1 further comprising examining previously-selectedediting options selected by one or more users and the classes of regionsreceiving the previously-selected edits; and determining the presentedset of editing options based on the most common of thepreviously-selected editing options selected for the identified class ofthe detected region.
 15. The method of claim 1 further comprisingreceiving a definition of a new class of region from a user, andassociating one or more editing options from the full set of editingoptions to the new class of region.
 16. A method comprising: detecting aregion of an image based on one or more characteristics of one or morepixels of the image, the region including only a portion of the image;identifying a class of the detected region, the class selected from aplurality of identifiable classes, wherein each of the plurality ofidentifiable classes of regions is associated with a different set ofone or more editing options, each editing option in each set beingassociated with one or more edit operations operable to adjust one ormore values of one or more pixels of an image; and presenting one of thesets of editing options for selection, wherein each of the presentedediting options is appropriate for the determined class of the region,and wherein each of the presented editing options is operable to adjustone or more values of one or more pixels of the detected region inresponse to being selected.
 17. The method of claim 16 wherein at leastone of the sets of editing options includes at least one type of editingoption that is different from the types of editing options in at leastone other set of editing options.
 18. The method of claim 16 wherein thepresented set of editing options includes a plurality of editing optionshaving different types, each type of editing option including one ormore edit operations different from edit operations of the other typesof editing options.
 19. A system comprising: a storage device; and atleast one processor accessing the storage device and operative toperform operations comprising: detecting a region of an image based onone or more characteristics of one or more pixels of the image, theregion including only a portion of the image, wherein the detectedregion has an identified class selected from a plurality of identifiableclasses, wherein each of the plurality of identifiable classes ofregions is associated with a set of multiple editing options, eachediting option in each set being associated with one or more editoperations operable to adjust one or more values of one or more pixelsof an image; and presenting one of the sets of editing options forselection, wherein the presented set of editing options is associatedwith the identified class of the detected region and wherein each of theediting options in the presented set is operable to adjust one or morevalues of one or more pixels of the detected region, and wherein thepresented set of editing options is different from at least one of theother sets of editing options associated with the other classes.
 20. Thesystem of claim 19 wherein the presented set of editing options includesa plurality of different types of editing options, each type of editingoption including one or more edit operations different from editoperations of the other types of editing options, wherein the differenttypes of editing options include at least one of: a blur operation thatblurs a pixel and a plurality of neighboring pixels in the detectedregion; a noise reduction operation that reduces noise in the detectedregion; a local contrast enhancement operation that adjusts the contrastof one or more pixels in the detected region relative to pixelsneighboring the one or more pixels in the detected region; and asharpening operation that causes a pixel value to differ from one ormore neighboring pixels in the detected region.